package com.saydc.forms.promociones;

import java.text.SimpleDateFormat;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

public class PromocionEmpleadoPuestoForm extends ActionForm {
	
	private static final long serialVersionUID = 1L;
	private String fechaPromocion;
	private String remuneracionPropuesta;
	private int puestoPromocion;
	
	private final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
	
	public String getFechaPromocion() {
		return fechaPromocion;
	}
	public void setFechaPromocion(String fechaPromocion) {
		this.fechaPromocion = fechaPromocion;
	}
	public String getRemuneracionPropuesta() {
		return remuneracionPropuesta;
	}
	public void setRemuneracionPropuesta(String remuneracionPropuesta) {
		this.remuneracionPropuesta = remuneracionPropuesta;
	}
	public int getPuestoPromocion() {
		return puestoPromocion;
	}
	public void setPuestoPromocion(int puestoPromocion) {
		this.puestoPromocion = puestoPromocion;
	}
	
	@Override
	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
		ActionErrors errors = new ActionErrors();
		if(fechaPromocion == null || fechaValida(fechaPromocion) == false){
			errors.add("fechaInvalida", new ActionMessage("error.promocionPuesto.fechaInvalida"));
		}
		if(puestoPromocion == -1){
			errors.add("puestoRequired", new ActionMessage("error.promocionPuesto.puestoRequired"));
		}
		if(remuneracionPropuesta == null || numeroValido(remuneracionPropuesta) == false){
			errors.add("numInvalido", new ActionMessage("error.promocionPuesto.numInvalido"));
		}
		return errors;
	}
	
	private boolean fechaValida(String fecha){
		try{
			sdf.parse(fecha);
		}catch(Exception e){
			return false;
		}
		return true;
	}
	
	private boolean numeroValido(String valor){
		double numero = 0d;
		try{
			numero = Double.parseDouble(valor);
		}catch(Exception e){
			return false;
		}
		if(numero == 0){
			return false;
		}
		return true;
	}
	
}
